RRPlot and the Colon data set

Libraries

library(survival)
library(FRESA.CAD)
## Loading required package: Rcpp
## Loading required package: stringr
## Loading required package: miscTools
## Loading required package: Hmisc
## 
## Attaching package: 'Hmisc'
## The following objects are masked from 'package:base':
## 
##     format.pval, units
## Loading required package: pROC
## Type 'citation("pROC")' for a citation.
## 
## Attaching package: 'pROC'
## The following objects are masked from 'package:stats':
## 
##     cov, smooth, var
op <- par(no.readonly = TRUE)
pander::panderOptions('digits', 3)
pander::panderOptions('table.split.table', 400)
pander::panderOptions('keep.trailing.zeros',TRUE)

source("C:/Users/jtame/Documents/GitHub/RISKPLOTS/CODE/auxplots.R")

The data set

data(cancer)
colon <- subset(colon,etype==1)
colon$etype <- NULL
rownames(colon) <- colon$id
colon$id <- NULL
colon <- colon[complete.cases(colon),]
time <- colon$time
status <- colon$status
data <- colon
data$time <- NULL
data$study <- NULL
table(data$status)

0 1 442 446

dataColon <- as.data.frame(model.matrix(status~.*age,data))
dataColon$`(Intercept)` <- NULL
dataColon$time <- time/365
dataColon$status <- status
colnames(dataColon) <-str_replace_all(colnames(dataColon),":","_")
colnames(dataColon) <-str_replace_all(colnames(dataColon),"\\.","_")
colnames(dataColon) <-str_replace_all(colnames(dataColon),"\\+","_")
data <- NULL

trainsamples <- sample(nrow(dataColon),0.7*nrow(dataColon))
dataColonTrain <- dataColon[trainsamples,]
dataColonTest <- dataColon[-trainsamples,]


pander::pander(table(dataColonTrain$status))
0 1
311 310
pander::pander(table(dataColonTest$status))
0 1
131 136

Modeling

ml <- BSWiMS.model(Surv(time,status)~1,data=dataColonTrain,loops=20,NumberofRepeats = 5)

[+++++++++++++++++++++++++]..

sm <- summary(ml)
pander::pander(sm$coefficients)
  Estimate lower HR upper u.Accuracy r.Accuracy full.Accuracy u.AUC r.AUC full.AUC IDI NRI z.IDI z.NRI Delta.AUC Frequency
age_nodes 6.74e-04 1.000 1.001 1.001 0.609 0.499 0.609 0.608 0.500 0.608 0.03435 0.434 6.28 5.87 0.10843 1.0
age_node4 2.62e-03 1.002 1.003 1.004 0.605 0.579 0.611 0.605 0.579 0.610 0.03339 0.394 5.21 5.85 0.03103 1.0
node4 2.31e-01 1.127 1.259 1.407 0.605 0.613 0.633 0.605 0.613 0.634 0.02662 0.327 4.49 4.76 0.02048 1.0
rxLev_5FU_age -2.75e-03 0.996 0.997 0.999 0.568 0.609 0.633 0.569 0.609 0.634 0.01771 0.275 3.80 3.69 0.02494 1.0
extent 1.86e-01 1.092 1.205 1.329 0.557 0.609 0.633 0.558 0.608 0.634 0.01795 0.231 3.71 4.36 0.02546 1.0
rxLev_5FU -1.01e-01 0.856 0.904 0.956 0.568 0.605 0.611 0.569 0.604 0.610 0.01592 0.275 3.58 3.69 0.00611 1.0
nodes 9.28e-03 1.001 1.009 1.017 0.609 0.625 0.634 0.608 0.625 0.634 0.00475 0.163 2.28 2.11 0.00924 1.0
age_extent 1.95e-09 1.000 1.000 1.000 0.536 0.499 0.536 0.536 0.500 0.536 0.00695 0.145 2.24 1.82 0.03631 0.8
adhere 8.49e-08 1.000 1.000 1.000 0.530 0.499 0.530 0.529 0.500 0.529 0.00461 0.117 2.11 2.11 0.02921 0.6
age_adhere 8.40e-10 1.000 1.000 1.000 0.530 0.499 0.530 0.529 0.500 0.529 0.00377 0.117 1.89 2.11 0.02921 0.4
age_surg 4.12e-10 1.000 1.000 1.000 0.533 0.499 0.533 0.533 0.500 0.533 0.00372 0.131 1.80 1.82 0.03266 0.2

Cox Model Performance

Here we evaluate the model using the RRPlot() function.

The evaluation of the raw Cox model with RRPlot()

Here we will use the predicted event probability assuming a baseline hazard for events withing 5 years

index <- predict(ml,dataColonTrain)
timeinterval <- round(2*mean(subset(dataColonTrain,status==1)$time),0)
timeinterval <- 2

h0 <- sum(dataColonTrain$status & dataColonTrain$time <= timeinterval)
h0 <- h0/sum((dataColonTrain$time > timeinterval) | (dataColonTrain$status==1))

rdata <- cbind(dataColonTrain$status,ppoisGzero(index,h0))

rrAnalysisTrain <- RRPlot(rdata,atRate=c(0.90,0.80),
                     timetoEvent=dataColonTrain$time,
                     title="Raw Train: Colon Cancer",
                     ysurvlim=c(0.00,1.0),
                     riskTimeInterval=timeinterval)

By Risk Categories

obsexp <- rrAnalysisTrain$OERatio$atThrEstimates

expObs(obsexp,"Train: Expected vs. Observed")

pander::pander(obsexp)
  Observed L.CI H.CI Expected O/E Low Upper pvalue
Total 310 276.4 346.5 455.2 0.681 0.607 0.761 6.78e-13
low 172 147.3 199.7 289.7 0.594 0.508 0.689 1.13e-13
90% 52 38.8 68.2 55.1 0.944 0.705 1.238 7.36e-01
80% 86 68.8 106.2 97.7 0.880 0.704 1.087 2.65e-01

Time to Event Analysis

rrAnalysisdata <- rrAnalysisTrain

pander::pander(wilcox.test(rrAnalysisdata$timetoEventData$eTime,rrAnalysisdata$timetoEventData$expectedTime,paired = TRUE))
Wilcoxon signed rank test with continuity correction: rrAnalysisdata$timetoEventData$eTime and rrAnalysisdata$timetoEventData$expectedTime
Test statistic P value Alternative hypothesis
140890 3.77e-23 * * * two.sided
highrisk <- rrAnalysisdata$timetoEventData$class == 2
pander::pander(wilcox.test(rrAnalysisdata$timetoEventData$eTime[highrisk],rrAnalysisdata$timetoEventData$expectedTime[highrisk],paired = TRUE))
Wilcoxon signed rank test with continuity correction: rrAnalysisdata$timetoEventData$eTime[highrisk] and rrAnalysisdata$timetoEventData$expectedTime[highrisk]
Test statistic P value Alternative hypothesis
3991 0.197 two.sided
timesdata <- expObsTime(rrAnalysisdata,title="Train: Expected vs Observed")

pander::pander(timesdata)
  O:Low Risk < 0.321 O:0.321 <= Risk < 0.411 O:High Risk >= 0.411 E:Low Risk < 0.321 E:0.321 <= Risk < 0.411 E:High Risk >= 0.411
1Q 1.65 0.486 0.542 2.84 2.04 1.27
Median 5.61 1.356 1.145 2.98 2.38 1.47
3Q 6.61 6.001 4.721 3.65 2.50 1.65

Uncalibrated Performance Report

pander::pander(t(rrAnalysisTrain$keyPoints),caption="Threshold values")
Threshold values
  @:0.9 @:0.8 @MAX_BACC @MAX_RR @SPE100 p(0.5)
Thr 0.411 0.321 0.289 0.229 0.18760 0.5022
RR 1.637 1.677 2.094 2.853 1.00000 1.6573
RR_LCI 1.413 1.446 1.711 1.703 0.00000 1.4058
RR_UCI 1.896 1.944 2.563 4.780 0.00000 1.9539
SEN 0.277 0.445 0.752 0.961 1.00000 0.1387
SPE 0.897 0.797 0.569 0.167 0.00965 0.9614
BACC 0.587 0.621 0.660 0.564 0.50482 0.5501
NetBenefit 0.102 0.174 0.288 0.356 0.38468 0.0498
pander::pander(t(rrAnalysisTrain$OERatio$estimate),caption="O/E Ratio")
O/E Ratio
O/E Low Upper p.value
0.681 0.607 0.761 6.78e-13
pander::pander(t(rrAnalysisTrain$OE95ci),caption="O/E Mean")
O/E Mean
mean 50% 2.5% 97.5%
1.18 1.18 1.16 1.2
pander::pander(t(rrAnalysisTrain$OAcum95ci),caption="O/Acum Mean")
O/Acum Mean
mean 50% 2.5% 97.5%
1.56 1.56 1.55 1.57
pander::pander(rrAnalysisTrain$c.index$cstatCI,caption="C. Index")
mean.C Index median lower upper
0.671 0.671 0.641 0.699
pander::pander(t(rrAnalysisTrain$ROCAnalysis$aucs),caption="ROC AUC")
ROC AUC
est lower upper
0.696 0.655 0.737
pander::pander((rrAnalysisTrain$ROCAnalysis$sensitivity),caption="Sensitivity")
Sensitivity
est lower upper
0.277 0.228 0.331
pander::pander((rrAnalysisTrain$ROCAnalysis$specificity),caption="Specificity")
Specificity
est lower upper
0.897 0.858 0.929
pander::pander(t(rrAnalysisTrain$thr_atP),caption="Probability Thresholds")
Probability Thresholds
90% 80%
0.411 0.321
pander::pander(rrAnalysisTrain$surdif,caption="Logrank test")
Logrank test Chisq = 75.779076 on 2 degrees of freedom, p = 0.000000
  N Observed Expected (O-E)^2/E (O-E)^2/V
class=0 420 172 235.5 17.1 72.0
class=1 83 52 32.5 11.7 13.1
class=2 118 86 42.0 46.2 53.9

Cox Calibration

op <- par(no.readonly = TRUE)


calprob <- CoxRiskCalibration(ml,dataColonTrain,"status","time")

( 3.150615 , 3115.997 , 1.028938 , 310 , 519.5296 )

pander::pander(c(h0=calprob$h0,
                 Gain=calprob$hazardGain,
                 TimeInterval=calprob$timeInterval),
               caption="Cox Calibration Parameters")
h0 Gain TimeInterval
0.692 1.54 3.15

The RRplot() of the calibrated model

rCaldata <- cbind(dataColonTrain$status,calprob$prob)


rrAnalysisCalTrain <- RRPlot(rCaldata,atRate=c(0.90,0.80),
                     timetoEvent=dataColonTrain$time,
                     title="Calibrated Train: Colon",
                     ysurvlim=c(0.00,1.0),
                     riskTimeInterval=calprob$timeInterval)

By Risk Categories

obsexp <- rrAnalysisCalTrain$OERatio$atThrEstimates

expObs(obsexp,"Cal: Expected vs. Observed")

pander::pander(obsexp)
  Observed L.CI H.CI Expected O/E Low Upper pvalue
Total 310 276.4 346.5 525.0 0.590 0.527 0.660 3.98e-24
low 172 147.3 199.7 334.1 0.515 0.441 0.598 1.85e-22
90% 52 38.8 68.2 63.6 0.818 0.611 1.073 1.67e-01
80% 86 68.8 106.2 112.7 0.763 0.610 0.942 1.09e-02

Time to Event Analysis

rrAnalysisdata <- rrAnalysisCalTrain

pander::pander(wilcox.test(rrAnalysisdata$timetoEventData$eTime,rrAnalysisdata$timetoEventData$expectedTime,paired = TRUE))
Wilcoxon signed rank test with continuity correction: rrAnalysisdata$timetoEventData$eTime and rrAnalysisdata$timetoEventData$expectedTime
Test statistic P value Alternative hypothesis
149550 2.26e-32 * * * two.sided
highrisk <- rrAnalysisdata$timetoEventData$class == 2
pander::pander(wilcox.test(rrAnalysisdata$timetoEventData$eTime[highrisk],rrAnalysisdata$timetoEventData$expectedTime[highrisk],paired = TRUE))
Wilcoxon signed rank test with continuity correction: rrAnalysisdata$timetoEventData$eTime[highrisk] and rrAnalysisdata$timetoEventData$expectedTime[highrisk]
Test statistic P value Alternative hypothesis
4277 0.0397 * two.sided
timesdata <- expObsTime(rrAnalysisdata,title="Cal: Expected vs Observed")

pander::pander(timesdata)
  O:Low Risk < 0.506 O:0.506 <= Risk < 0.618 O:High Risk >= 0.618 E:Low Risk < 0.506 E:0.506 <= Risk < 0.618 E:High Risk >= 0.618
1Q 1.65 0.486 0.542 2.46 1.77 1.10
Median 5.61 1.356 1.145 2.58 2.06 1.28
3Q 6.61 6.001 4.721 3.17 2.17 1.43

Calibrated Train Performance

pander::pander(t(rrAnalysisTrain$keyPoints),caption="Threshold values")
Threshold values
  @:0.9 @:0.8 @MAX_BACC @MAX_RR @SPE100 p(0.5)
Thr 0.411 0.321 0.289 0.229 0.18760 0.5022
RR 1.637 1.677 2.094 2.853 1.00000 1.6573
RR_LCI 1.413 1.446 1.711 1.703 0.00000 1.4058
RR_UCI 1.896 1.944 2.563 4.780 0.00000 1.9539
SEN 0.277 0.445 0.752 0.961 1.00000 0.1387
SPE 0.897 0.797 0.569 0.167 0.00965 0.9614
BACC 0.587 0.621 0.660 0.564 0.50482 0.5501
NetBenefit 0.102 0.174 0.288 0.356 0.38468 0.0498
pander::pander(t(rrAnalysisTrain$OERatio$estimate),caption="O/E Ratio")
O/E Ratio
O/E Low Upper p.value
0.681 0.607 0.761 6.78e-13
pander::pander(t(rrAnalysisTrain$OE95ci),caption="O/E Mean")
O/E Mean
mean 50% 2.5% 97.5%
1.18 1.18 1.16 1.2
pander::pander(t(rrAnalysisTrain$OAcum95ci),caption="O/Acum Mean")
O/Acum Mean
mean 50% 2.5% 97.5%
1.56 1.56 1.55 1.57
pander::pander(rrAnalysisTrain$c.index$cstatCI,caption="C. Index")
mean.C Index median lower upper
0.671 0.671 0.641 0.699
pander::pander(t(rrAnalysisTrain$ROCAnalysis$aucs),caption="ROC AUC")
ROC AUC
est lower upper
0.696 0.655 0.737
pander::pander((rrAnalysisTrain$ROCAnalysis$sensitivity),caption="Sensitivity")
Sensitivity
est lower upper
0.277 0.228 0.331
pander::pander((rrAnalysisTrain$ROCAnalysis$specificity),caption="Specificity")
Specificity
est lower upper
0.897 0.858 0.929
pander::pander(t(rrAnalysisTrain$thr_atP),caption="Probability Thresholds")
Probability Thresholds
90% 80%
0.411 0.321
pander::pander(rrAnalysisTrain$surdif,caption="Logrank test")
Logrank test Chisq = 75.779076 on 2 degrees of freedom, p = 0.000000
  N Observed Expected (O-E)^2/E (O-E)^2/V
class=0 420 172 235.5 17.1 72.0
class=1 83 52 32.5 11.7 13.1
class=2 118 86 42.0 46.2 53.9

Evaluating on the test set

The calibrated h0 and timeinterval were estimated on the training set

index <- predict(ml,dataColonTest)
rdata <- cbind(dataColonTest$status,ppoisGzero(index,calprob$h0))

rrAnalysisTest <- RRPlot(rdata,atThr = rrAnalysisCalTrain$thr_atP,
                     timetoEvent=dataColonTest$time,
                     title="Test: Colon Cancer",
                     ysurvlim=c(0.00,1.0),
                     riskTimeInterval=calprob$timeInterval)

By Risk Categories

obsexp <- rrAnalysisTest$OERatio$atThrEstimates

expObs(obsexp,"Test: Expected vs. Observed")

pander::pander(obsexp)
  Observed L.CI H.CI Expected O/E Low Upper pvalue
Total 136 114.1 160.9 214.3 0.635 0.532 0.751 1.33e-08
low 72 56.3 90.7 134.0 0.537 0.420 0.677 6.25e-09
90% 21 13.0 32.1 30.1 0.698 0.432 1.067 1.01e-01
80% 43 31.1 57.9 58.6 0.733 0.531 0.988 4.25e-02

Time to Event Analysis

rrAnalysisdata <- rrAnalysisTest

pander::pander(wilcox.test(rrAnalysisdata$timetoEventData$eTime,rrAnalysisdata$timetoEventData$expectedTime,paired = TRUE))
Wilcoxon signed rank test with continuity correction: rrAnalysisdata$timetoEventData$eTime and rrAnalysisdata$timetoEventData$expectedTime
Test statistic P value Alternative hypothesis
27657 1.04e-14 * * * two.sided
highrisk <- rrAnalysisdata$timetoEventData$class == 2
pander::pander(wilcox.test(rrAnalysisdata$timetoEventData$eTime[highrisk],rrAnalysisdata$timetoEventData$expectedTime[highrisk],paired = TRUE))
Wilcoxon signed rank test with continuity correction: rrAnalysisdata$timetoEventData$eTime[highrisk] and rrAnalysisdata$timetoEventData$expectedTime[highrisk]
Test statistic P value Alternative hypothesis
1136 0.0587 two.sided
timesdata <- expObsTime(rrAnalysisdata,title="Test: Expected vs Observed")

pander::pander(timesdata)
  O:Low Risk < 0.506 O:0.506 <= Risk < 0.618 O:High Risk >= 0.618 E:Low Risk < 0.506 E:0.506 <= Risk < 0.618 E:High Risk >= 0.618
1Q 1.49 1.12 0.63 2.46 1.84 1.17
Median 5.50 1.86 1.20 2.67 1.99 1.34
3Q 6.35 5.73 4.16 3.14 2.16 1.43

Test Performance

pander::pander(t(rrAnalysisTest$keyPoints),caption="Threshold values")
Threshold values
  @:0.618 @:0.506 @MAX_BACC @MAX_RR @SPE100 p(0.5)
Thr 0.6193 0.506 0.492 0.370 0.28841 0.499
RR 1.6300 1.609 1.730 3.397 1.00000 1.600
RR_LCI 1.3121 1.285 1.370 1.195 0.00000 1.275
RR_UCI 2.0250 2.015 2.184 9.656 0.00000 2.007
SEN 0.3162 0.471 0.544 0.978 1.00000 0.485
SPE 0.8779 0.763 0.733 0.122 0.00763 0.748
BACC 0.5970 0.617 0.638 0.550 0.50382 0.617
NetBenefit 0.0636 0.121 0.150 0.245 0.31205 0.124
pander::pander(t(rrAnalysisTest$OERatio$estimate),caption="O/E Ratio")
O/E Ratio
O/E Low Upper p.value
0.635 0.532 0.751 1.33e-08
pander::pander(t(rrAnalysisTest$OE95ci),caption="O/E Mean")
O/E Mean
mean 50% 2.5% 97.5%
0.987 0.987 0.96 1.01
pander::pander(t(rrAnalysisTest$OAcum95ci),caption="O/Acum Mean")
O/Acum Mean
mean 50% 2.5% 97.5%
1.03 1.03 1.03 1.03
pander::pander(rrAnalysisTest$c.index$cstatCI,caption="C. Index")
mean.C Index median lower upper
0.638 0.639 0.589 0.69
pander::pander(t(rrAnalysisTest$ROCAnalysis$aucs),caption="ROC AUC")
ROC AUC
est lower upper
0.674 0.61 0.738
pander::pander((rrAnalysisTest$ROCAnalysis$sensitivity),caption="Sensitivity")
Sensitivity
est lower upper
0.316 0.239 0.401
pander::pander((rrAnalysisTest$ROCAnalysis$specificity),caption="Specificity")
Specificity
est lower upper
0.878 0.809 0.929
pander::pander(t(rrAnalysisTest$thr_atP),caption="Probability Thresholds")
Probability Thresholds
90% 80%
0.618 0.506
pander::pander(rrAnalysisTest$surdif,caption="Logrank test")
Logrank test Chisq = 27.563496 on 2 degrees of freedom, p = 0.000001
  N Observed Expected (O-E)^2/E (O-E)^2/V
class=0 172 72 96.8 6.37 22.316
class=1 36 21 17.2 0.85 0.975
class=2 59 43 22.0 20.09 24.142

Cross-Validation

Here we will cross validate the training set and evaluate also on the testing set. The h0 and the timeinterval are the ones estimated on the calibration process

rcv <- randomCV(theData=dataColonTrain,
                theOutcome = Surv(time,status)~1,
                fittingFunction=BSWiMS.model, 
                trainFraction = 0.75,
                repetitions=50,
                classSamplingType = "Pro",
                testingSet=dataColonTest
         )

.[++++].[++++].[+++].[++++].[+++-].[+++].[++++].[+++].[++++].[+++]10 Tested: 849 Avg. Selected: 8.4 Min Tests: 1 Max Tests: 10 Mean Tests: 4.982332 . MAD: 0.4704607

.[+++-].[++++-].[+++++].[++++++].[+++].[+++-].[+++-].[++++++].[+++].[++++-]20 Tested: 885 Avg. Selected: 8.15 Min Tests: 1 Max Tests: 20 Mean Tests: 9.559322 . MAD: 0.4693351

.[++++].[+++-].[+++-].[++++].[++++].[+++-].[++++++].[+++++].[+++++].[++++]30 Tested: 888 Avg. Selected: 8.333333 Min Tests: 1 Max Tests: 30 Mean Tests: 14.29054 . MAD: 0.4695776

.[++++–].[++++-].[++–].[++++].[++++].[+++++].[+++++].[+++++].[++++++].[++++]40 Tested: 888 Avg. Selected: 8.425 Min Tests: 1 Max Tests: 40 Mean Tests: 19.05405 . MAD: 0.4702961

.[++++-].[++++].[++++].[++++].[++++-].[+++].[+++++].[+++].[++++].[+++-]50 Tested: 888 Avg. Selected: 8.34 Min Tests: 1 Max Tests: 50 Mean Tests: 23.81757 . MAD: 0.4705424

stp <- rcv$survTestPredictions
stp <- stp[!is.na(stp[,4]),]

bbx <- boxplot(unlist(stp[,1])~rownames(stp),plot=FALSE)
times <- bbx$stats[3,]
status <- boxplot(unlist(stp[,2])~rownames(stp),plot=FALSE)$stats[3,]
prob <- ppoisGzero(boxplot(unlist(stp[,4])~rownames(stp),plot=FALSE)$stats[3,],calprob$h0)

rdatacv <- cbind(status,prob)
rownames(rdatacv) <- bbx$names
names(times) <- bbx$names

rrAnalysisCVTest <- RRPlot(rdatacv,atThr = rrAnalysisCalTrain$thr_atP,
                     timetoEvent=times,
                     title="CV Test: Colon Cancer",
                     ysurvlim=c(0.00,1.0),
                     riskTimeInterval=calprob$timeInterval)

By Risk Categories

obsexp <- rrAnalysisCVTest$OERatio$atThrEstimates

expObs(obsexp,"CV: Expected vs. Observed")

pander::pander(obsexp)
  Observed L.CI H.CI Expected O/E Low Upper pvalue
Total 446 405.6 489 774 0.576 0.524 0.632 2.07e-37
low 219 191.0 250 436 0.502 0.438 0.573 1.83e-30
90% 90 72.4 111 126 0.714 0.574 0.878 9.60e-04
80% 137 115.0 162 198 0.692 0.581 0.818 6.14e-06

Time to Event Analysis

rrAnalysisdata <- rrAnalysisCVTest

pander::pander(wilcox.test(rrAnalysisdata$timetoEventData$eTime,rrAnalysisdata$timetoEventData$expectedTime,paired = TRUE))
Wilcoxon signed rank test with continuity correction: rrAnalysisdata$timetoEventData$eTime and rrAnalysisdata$timetoEventData$expectedTime
Test statistic P value Alternative hypothesis
306656 2.32e-46 * * * two.sided
highrisk <- rrAnalysisdata$timetoEventData$class == 2
pander::pander(wilcox.test(rrAnalysisdata$timetoEventData$eTime[highrisk],rrAnalysisdata$timetoEventData$expectedTime[highrisk],paired = TRUE))
Wilcoxon signed rank test with continuity correction: rrAnalysisdata$timetoEventData$eTime[highrisk] and rrAnalysisdata$timetoEventData$expectedTime[highrisk]
Test statistic P value Alternative hypothesis
11694 0.000962 * * * two.sided
timesdata <- expObsTime(rrAnalysisdata,title="CV: Expected vs Observed")

pander::pander(timesdata)
  O:Low Risk < 0.506 O:0.506 <= Risk < 0.618 O:High Risk >= 0.618 E:Low Risk < 0.506 E:0.506 <= Risk < 0.618 E:High Risk >= 0.618
1Q 1.70 0.764 0.551 2.40 1.83 1.08
Median 5.58 2.144 1.153 2.67 2.09 1.24
3Q 6.60 5.999 4.989 3.21 2.17 1.38

CV Test Performance

pander::pander(t(rrAnalysisCVTest$keyPoints),caption="Threshold values")
Threshold values
  @:0.618 @:0.506 @MAX_BACC @MAX_RR @SPE100 p(0.5)
Thr 0.6178 0.506 0.469 0.374 0.26153 0.500
RR 1.6242 1.654 1.848 2.492 1.00000 1.632
RR_LCI 1.4382 1.456 1.558 1.681 0.00000 1.434
RR_UCI 1.8342 1.879 2.191 3.694 0.00000 1.857
SEN 0.3094 0.511 0.765 0.955 1.00000 0.534
SPE 0.8778 0.738 0.491 0.165 0.00452 0.710
BACC 0.5936 0.624 0.628 0.560 0.50226 0.622
NetBenefit 0.0571 0.123 0.160 0.231 0.32679 0.124
pander::pander(t(rrAnalysisCVTest$OERatio$estimate),caption="O/E Ratio")
O/E Ratio
O/E Low Upper p.value
0.576 0.524 0.632 2.07e-37
pander::pander(t(rrAnalysisCVTest$OE95ci),caption="O/E Mean")
O/E Mean
mean 50% 2.5% 97.5%
0.969 0.97 0.955 0.985
pander::pander(t(rrAnalysisCVTest$OAcum95ci),caption="O/Acum Mean")
O/Acum Mean
mean 50% 2.5% 97.5%
1.01 1.01 1.01 1.01
pander::pander(rrAnalysisCVTest$c.index$cstatCI,caption="C. Index")
mean.C Index median lower upper
0.652 0.651 0.626 0.677
pander::pander(t(rrAnalysisCVTest$ROCAnalysis$aucs),caption="ROC AUC")
ROC AUC
est lower upper
0.678 0.643 0.713
pander::pander((rrAnalysisCVTest$ROCAnalysis$sensitivity),caption="Sensitivity")
Sensitivity
est lower upper
0.307 0.265 0.352
pander::pander((rrAnalysisCVTest$ROCAnalysis$specificity),caption="Specificity")
Specificity
est lower upper
0.878 0.844 0.907
pander::pander(t(rrAnalysisCVTest$thr_atP),caption="Probability Thresholds")
Probability Thresholds
90% 80%
0.618 0.506
pander::pander(rrAnalysisCVTest$surdif,caption="Logrank test")
Logrank test Chisq = 100.259839 on 2 degrees of freedom, p = 0.000000
  N Observed Expected (O-E)^2/E (O-E)^2/V
class=0 545 219 308.3 25.85 84.41
class=1 152 90 68.7 6.63 7.85
class=2 191 137 69.1 66.80 79.66